#include "entities.h"
#include <stdio.h>
#include <stdlib.h>

SJoueur* CreateJoueur(){
	SJoueur *tempJ;
	
	if((tempJ = (SJoueur*) malloc(sizeof(SJoueur))) == NULL){
		fprintf(stderr,"Erreur d'allocation <CreateScoreTab(int):--> CreateJoueur:--> malloc>");
		exit(2);
	}
	
	tempJ->overall = 0;
	tempJ->scoreCentre = 0;
	tempJ->scoreProximite = 0;
	tempJ->scoreUnit = 0;
	tempJ->suivant = NULL;
	
	
	return tempJ;
	
}

void addJoueurToList(SJoueur** currentList, SJoueur* currentPlayer){
	SJoueur *i;
	
	if (*currentList == NULL) {
		
		*currentList = currentPlayer;
		
	}else {
		i = *currentList;
		while (i->suivant != NULL) {
			i=i->suivant;
		}
		
		i->suivant = currentPlayer;		
	}	
	
	
}

SJoueur* getJoueurnumber(SScoreTab scoreTab,unsigned int numero){
	unsigned int i;
	SJoueur* cpt;
	
	if(numero > scoreTab.nbTeams){
		fprintf(stderr,"L'equipe n°%d n'existe pas\n", numero);
		exit(3);
	}
	
	cpt = scoreTab.playerList;
	
	for (i=0; i<numero; i++) {
		cpt = cpt->suivant;
	}
	
	return cpt;
	
	
}


void CreateTabScore(SScoreTab* scoreTab, unsigned int nbTeams, unsigned int teamId){
	SJoueur* tempJ;
	unsigned int i;
	
	for (i=0; i<nbTeams; i++){
		tempJ = CreateJoueur();
		addJoueurToList(&(scoreTab->playerList), tempJ);
	}
	
	scoreTab->nbTeams = nbTeams;
	scoreTab->myTeamId = teamId;
	afficheScoreTab(scoreTab);
}

//Revoir la fonction de free
void deleteScoreTab(SScoreTab* scoreTab){
	afficheScoreTab(scoreTab);
	
	SJoueur *j, *i;
	i = scoreTab->playerList;
	
	while (i != NULL) {
		
		if (i->suivant != NULL) {
			j=i;
			i=i->suivant;
			free(j);
			j=NULL;
		}else {
			//free(i);
		}

	}
	
	//free(scoreTab->playerList);
	
	printf("Mémoire nettoyée\n");
	
}


void afficheScoreTab(SScoreTab* scoreTab){
	SJoueur *cpt;
	cpt = scoreTab->playerList;
	unsigned int i = 0;
	
	
	printf("___SCORE TAB ___ \n");
	if (cpt == NULL) {
		
		printf("Liste vide\n");
		
	}else {
		
		while (cpt != NULL) {
			printf("Equipe n°%u : %d\n", i, cpt->overall);
			cpt = cpt->suivant;
			i++;
		}
	}
}





